import React, { useEffect, useState } from 'react'
import axios from 'axios'
import { Button, notification, Table } from 'antd'

export default function Audit() {
  const [dataSource, setDataSource] = useState([])
  const { roleId, region, username } = JSON.parse(localStorage.getItem("token"))

  useEffect(() => {
    const roleObj = {
      "1": "superadmin",
      "2": "admin",
      "3": "editor"
    }

    axios.get(`http://localhost:5000/news?auditState=1&_expand=category`).then(res => {
      const list = res.data
      setDataSource(roleObj[roleId] === "superadmin" ? list : [
        ...list.filter(item => item.author === username),
        ...list.filter(item => item.region === region && roleObj[item.roleId] === "editor")
      ])

    })


  }, [roleId, region, username])

  const handleAudit = (item, auditState, publishState) => {
    setDataSource(dataSource.filter(data => data.id !== item.id))

    axios.patch(`http://localhost:5000/news/${item.id}`, {
      auditState,
      publishState
    }).then(res => {
      notification.info({
        title: "通知",
        description: "【审核管理/审核列表】中查看审核状态",
        placement: "bottomRight"
      })
    })
  }

  const columns = [
    {
      title: '新闻标题',
      dataIndex: 'title',
      render: (title, item) => {
        return <a href={`#/news-manage/preview/${item.id}`}>{title}</a>
      }
    },
    {
      title: '作者',
      dataIndex: 'author',
    },
    {
      title: '新闻分类',
      dataIndex: 'category',
      render: (category) => {
        return <div>{category.title}</div>
      }
    },
    {
      title: '操作',
      render: (item) => {
        return <div>
          <Button onClick={() => handleAudit(item, 2, 1)} type='primary'>通过</Button>
          <Button onClick={() => handleAudit(item, 3, 0)} danger>驳回</Button>
        </div>
      }
    }
  ];

  return (
    <div>
      <Table
        dataSource={dataSource}
        columns={columns}
        pagination={{
          pageSize: 5
        }}
        rowKey={item => item.id}
      />
    </div>
  )
}
